#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：zhcx-service-test
@File    ：logging_control.py
@Author  ：关依林
@Date    ：2023/7/26 13:50
'''
import logging,os,time

import colorlog

from common.setting import ensure_path_sep

class Logging:

    def log(self,productName,level='DEBUG'):
        """

        @param productName: 日志文件名
        @param level: 日志级别
        @return:
        """
        levelLower = level.lower()
        nowTime = time.strftime("%Y-%m-%d", time.localtime())
        fileName = os.path.join(ensure_path_sep(f'\\logs\\{productName}\\'), (levelLower + "-" + f"{nowTime}.log"))
        fileName = os.path.normpath(fileName)

        formatter = self.log_color()

        # 创建日志器
        logger = logging.getLogger()
        # 设置日志级别
        logger.setLevel(level)
        if not logger.handlers:
            # 创建控制台日志处理器
            screen_output = logging.StreamHandler()
            # 创建日志文件处理器
            fh = logging.FileHandler(filename=fileName,mode='a',encoding="utf-8")
            # 创建格式器
            format_str = logging.Formatter("%(levelname)-8s%(asctime)s%(name)s:%(filename)s:%(lineno)d %(message)s")
            # 给处理器添加格式
            screen_output.setFormatter(formatter)
            fh.setFormatter(format_str)
            # 给日志器添加处理器，过滤器一般在工作中用的比较少，如果需要精确过滤，可以使用过滤器
            logger.addHandler(screen_output)
            logger.addHandler(fh)
        return logger

    @classmethod
    def log_color(cls):
        """ 设置日志颜色 """
        log_colors_config = {
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'red',
        }

        formatter = colorlog.ColoredFormatter(
            "[%(asctime)s]-[%(levelname)s]-[%(filename)s]-[Line:%(lineno)d]-[%(message)s]",
            log_colors=log_colors_config
        )
        return formatter

